import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.5
import org.ukui.menu.core 1.0
import org.ukui.quick.platform 1.0 as Platform
import org.ukui.quick.items 1.0 as UkuiItems

MouseArea {
    id: control
    property bool isSelect: false
    hoverEnabled: true
    states: State {
        when: control.activeFocus
        PropertyChanges {
            target: controlBase
            borderColor: Platform.Theme.Highlight
            border.width: 2
        }
    }
    UkuiItems.StyleBackground {
        id: controlBase
        anchors.fill: parent
        radius: Platform.Theme.minRadius
        useStyleTransparency: false
        paletteRole: Platform.Theme.Text
        alpha: isSelect ? 1.00 : control.containsPress ? 0.16 : control.containsMouse ? 0.08 : 0.00
        ToolTip.visible: content.textTruncated && control.containsMouse
        ToolTip.text: name
        ToolTip.delay: 500

        RowLayout {
            anchors.fill: parent
            spacing: 2

            IconLabel {
                id: content
                Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
                Layout.fillWidth: true
                Layout.fillHeight: true

                iconHeight: 32; iconWidth: iconHeight
                appName: name; appIcon: icon
                display: Display.TextBesideIcon
                spacing: 12
            }

            Loader {
                id: tag
                visible: mainWindow.editMode
                Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
                Layout.fillWidth: true
                Layout.fillHeight: true
                Layout.maximumWidth: visible ? 28 : 0
                Layout.maximumHeight: width
                Layout.rightMargin: visible ? 4 : 0

                Component {
                    id: editImage
                    UkuiItems.Button {
                        width: 28
                        height: 28
                        icon.width: 16
                        icon.height: 16
                        background.paletteRole: Platform.Theme.Light
                        background.alpha: 1
                        activeFocusOnTab: false

                        onClicked: {
                            appManager.changeFavoriteState(id, favorite);
                        }

                        background.radius: width / 2
                        icon.source: favorite ? "ukui-cancel-star-symbolic" : "non-starred-symbolic"
                    }
                }
                sourceComponent: mainWindow.editMode ? editImage : null
            }
        }
    }
}
